package cn.itcast.vo;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Setter
@Getter
public class PageBean {
//    1、当前页码 2、每页显示的条数 3、每页的数据list 4、总条数 5、总页数 6、上一页 7、下一页 8、起始页码 9、结束的页码
//    1、当前页码
    private int pageNum;
    //    2、每页显示条数
    private int pageSize;
    //    3、每页的数据
    private List list;
    //    4、总条数
    private Long total;
    //    5、总页数
    private int pages;
    //   6、上一页
    private int prePage;
    //    7、下一页
    private int nextPage;
    //    8、起始页码
    private int navigateFirstPage;
    //    9、结束页码
    private int navigateLastPage;

//    页面传值：1、当前页码 2、每页显示的条数
//    计算： 5、总页数 6、上一页 7、下一页 8、起始页码 9、结束的页码
//    数据库中： 3、每页的数据list 4、总条数


  public PageBean(int pageNum, int pageSize,List list,Long total){
     this.pageNum=pageNum;
     this.pageSize=pageSize; //每页显示的条数
     this.list=list;
     this.total=total; //总条数

//   5、总页数   = 总条数/每页显示的条数  判断是否有余数 如果有+1
     if(total%pageSize==0){
       this.pages=(int)(total/pageSize);
     }else{
       this.pages=(int)((total/pageSize)+1);
     }
//  6、上一页 当前页-1      当前页不能小于等于1
    if(pageNum<=1){
      this.prePage=1;
    }else{
      this.prePage=this.pageNum-1;
    }
//  7、下一页  当前页+1    当前页不能大于等于总页数
    if(this.pageNum>=this.pages){
      this.nextPage=this.pages;
    }else{
      this.nextPage=this.pageNum+1;
    }
//  8、起始页码
//  9、结束的页码
//    要求：如果总页数大于5，页面上的页码始终只显示5个数
    if(this.pages<=5){
      this.navigateFirstPage=1;
      this.navigateLastPage=this.pages;
    }else{
//          情况1：当前页码<=3
//              起始页码：1  结束页码：5
//          情况2： 总页数-当前页码 <=2
//              起始页码：总页数-4  结束页码：总页数
//          情况3 ：以当前页为中心 前面两个数 后面两个数
//              起始页码：当前页码-2  结束页码：当前页码+2

         if(this.pageNum<=3){
           this.navigateFirstPage=1;
           this.navigateLastPage=5;
         }else if((pages-pageNum)<=2){
           this.navigateFirstPage=pages-4;
           this.navigateLastPage=pages;
         }else{
           this.navigateFirstPage=pageNum-2;
           this.navigateLastPage=pageNum+2;
         }
    }

  }


}
